package SSM.Chat.Dao;

import SSM.Chat.Domain.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository

public interface BookDao {
     List<Settings> SettingSelectAll();
     void AutoCodeAdd(AuthCode authCode);
     List<AuthCode> AutoCodeSelectAll();
     void DelAutoCode(AuthCode authCode);
     AuthCode SelectTypeAutoCode(AuthCode authCode);
     User SelectUserMailbox(@Param("userMailbox") String userMailbox);
     void  UserAdd(User user);
     void SettingAdd(Settings settings);
     Boolean AutoCodeUpdateUse(AuthCode authCode);
     User UserLogin(User user);

     void UserUpdatePassword(User user);
     User UserSelectMailbox(@Param("userMailbox") String userMailbox);
     Settings SettingSelectMailbox(@Param("userMailbox") String userMailbox);

     List<Buddy> BuddySelectOneself(@Param("buddyOneselfId") String buddyOneselfId);
     List<User> UserBatchSelect(@Param("list") String[] list);

     List<Group> GroupSelectUserId(@Param("groupUserId") String groupUserId);
     List<User> UserNotBatchSelect(@Param("list") String[] list,
                                   @Param("userMailbox") String userMailbox);

     List<User> UserBlurSelect(User user);

     Group GroupSelectName(Group group);
     void GroupInformation(Group group);
     void BuddyInformation(Buddy buddy);
     void AwaitInformation(Await await);
     List<Await> AwaitSelectPrimary(@Param("awaitPrimary") String awaitPrimary);
     List<Await> AwaitSelectPrimaryType(@Param("awaitPrimary") String awaitPrimary,@Param("awaitType") String awaitType);
     void AwaitUpdateState(Await await);
     Group GroupSelectId(Group group);
     Await AwaitSelectMailbox(Await await);
     void AwaitDelete(Await await);
     void GroupUpdateName(Group group);
     void GroupDelete(Group group);
     void BuddyUpdateGroup(Buddy buddy);
     Buddy BuddySelectInformation(Buddy buddy);
     void BuddyDelete(Buddy buddy);
     List<Buddy> BuddySelectMailboxId(Buddy buddy);
     List<Await> AwaitSelectAll();
     ChatList ChatListSelectMailbox(ChatList chatList);
     void ChatListInformation(ChatList chatList);
     void ChatListUpdateType(ChatList chatList);
     void ChatInformation(Chat chat);
     List<Chat> ChatSelectMailbox(Chat chat);
     List<Settings> test();
     void ImageInformation(Image image);
     Image ImageSelectId(@Param("imageId") String image);
     void ChatUpdateMailboxType(Chat chat);
     Chat ChatSelectId(@Param("chatId") Integer chatId);
     void ChatDelete(@Param("chatId") Integer chatId);
     void ImageDelete(@Param("imageId") String imageId);
     List<Chat> ChatSelectMailBoxType(Chat chat);
     List<ChatList> ChatListSelectMailboxAll(@Param(
             "chatListMailbox")String chatListMailbox);
     void ChatListUpdateNew(ChatList chatList);
     void ChatListText(ChatList chatList);
     void SettingUpdateTheme(Settings settings);
     void SettingUpdateSidebar(Settings settings);




}
